#!/usr/bin/env python
# -*-coding:UTF-8 -*-
'''
@Project ：爬虫-波波老师
@File：13-xpath01.py
@Author ：文非
@Date：2021/3/1110:57
@Require：
'''
from lxml import etree

if __name__ == "__main__":
    # 1. 实例化一个etree对象,且将被解析的源码加载到该对象中
    tree = etree.parse("./test.html")
    # 2. 定义xpath表达式
    #### 2.1 标签的定位 --- 层级关系来实现标签定位
    r = tree.xpath("/html/body/div")  # " / "表示从根节点标签开始遍历
    print(r)
    r1 = tree.xpath("/html//div")  # " / "多层级遍历，可以从任意位置进行定位
    print(r1)
    r2 = tree.xpath("//div")  # " / "表示找到所有的div元素
    print(r2)
    # 定位到属性名称为class=song的div
    r3 = tree.xpath('//div[@class="song"]')  # " / "表示找到所有的div元素
    print(r3)
    r4 = tree.xpath('//div[@class="song"]/p[3]')  # " / "表示找到所有的div元素
    print(r4)

    # 取文本
    #  /text()只能取直系标签
    text = tree.xpath('//div[@class="tang"]//li[5]/a/text()')[0]  #  text()方法返回的是一个列表因此用索引值显示列表元素
    print(text)
    #  //text() 标签中非直系的文本内容 (所有的文本内容)
    text_1 = tree.xpath('//div[@class="tang"]//li[7]//text()')
    print(text_1)
    text_2 = tree.xpath('//div[@class="tang"]/text()')
    print(text_2)
    # 获取标签属性
    text_3 = tree.xpath('//div[@class="song"]/img/@src')[0]
    print(text_3)


